package dominioEdificio;

import interfaces.Notificable;
import interfaces.Notificador;

public class Ventilador implements Notificador{

	Notificable observador;
	private boolean encendido;
	private int velocidad;
	
	public static int velocidadMaxima = 10;
	public static String ventiladorEncendido = "Ventilador encendido";
	public static String ventiladorApagado = "Ventilador apagado";
	public static String velocidadMaximaAlcanzada = "Velocidad maxima";
	
	public Ventilador(){
		this.encendido = false;
		this.velocidad = 0;
	}
	
	public void encender(){
		if (!this.encendido) {
			this.encendido = true;
			this.velocidad = 1;
			this.notificar(ventiladorEncendido);
		}
	}
	
	public void apagar(){
		if (this.encendido) {
			this.encendido = false;
			this.velocidad = 0;
			this.notificar(ventiladorApagado);
		}
	}
	
	public void aumentarVelocidad(){
		if (this.encendido) {
			if (this.velocidad < velocidadMaxima) this.velocidad++;
			if (this.velocidad == velocidadMaxima) this.notificar(velocidadMaximaAlcanzada);
		}
	}
	
	public void disminuirVelocidad(){
		if (this.encendido) {
			if (this.velocidad > 0) this.velocidad--;
			if (this.velocidad == 0) {
				this.encendido = false;
				this.notificar(ventiladorApagado);
			}
		}
	}
	
	public void registrarObservador(Notificable obs) {
		this.observador = obs;
	}

	public void notificar(String evento) {
		if (this.observador != null) this.observador.notificarMensaje(evento);
	}

}
